Recently, the capacity of a NAND flash memory that is a nonvolatile semiconductor memory device has been increasing and an SSD (Solid State Drive) on which a NAND flash memory is mounted attracts attention.
Conventionally, in an SSD, a management table in a volatile memory is directly stored in a NAND flash memory that is a nonvolatile memory. However, when the size of the management table is large, a volatile memory of a large memory size is needed. Moreover, when the size of the management table is large, a long time is required for reading the management table from the NAND flash memory to the volatile memory. Therefore, it is desirable to reduce the size of the management table.
Moreover, in an SSD, in some cases, the concept of a logical block as a virtual block, in which a plurality of physical blocks as a unit for erasing in a flash memory is combined, is introduced, and erasing, writing, and reading are each performed in parallel in units of logical blocks, thereby improving the write amplification factor and achieving speed-up by the parallel processing.
Among a plurality of physical blocks in a flash memory, a bad block, which cannot be used as a storage area, is already included in the manufacturing stage in some cases. Moreover, when an SSD is used, a bad block is generated in some cases. The former bad block is referred to as a congenital bad block and the latter bad block is referred to as an acquired bad block. A logical block is in some cases composed of physical blocks excluding such a bad block.
Moreover, in an SSD, data stored in a flash memory includes user data that a user stores therein and system data as management information used in the SSD. When a logical block for user data is constructed, it is desirable to reserve a logical block for user data in which a parallelism of a predetermined number is ensured as many as possible so that a margin capacity can be reserved while excluding a congenital bad block.